#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>

int main()
{
    printf("我是父进程，我的pid是：%d\n", getpid());
    pid_t id = fork();
    if(id == 0)
    {
        //子进程
        //我们要子进程执行全新的程序，以前我们是子进程执行父进程的代码片段
        
        printf("我是子进程，我的pid是：%d\n", getpid());

        char* const argv_[] = {
            (char*)"top",
            NULL 
        };

        execvp("top", argv_);

        exit(100); //只要执行了exit，就意味着，execl系列的函数失败了 -- 进程替换失败了
    }

    //一定是父进程
    int status = 0;
    int ret = waitpid(id, &status, 0);
    if(ret == id)
    {
        sleep(2);
        printf("进程等待成功！\n");
    }

    return 0;
}

